package com.o.mj.controller;

import com.o.mj.pojo.Login;
import com.o.mj.pojo.Register;
import com.o.mj.service.LoginService;
import com.o.mj.util.Md5Util;
import com.o.mj.util.exception.R;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;

/**
 * 登录相关
 */

@Controller
public class LoginController {

    @Autowired
    LoginService loginService;


    /**
     * 登录功能
     */
    @PostMapping("/login")
    @ResponseBody
    public R login(@RequestBody Login login, HttpSession session) {
        //获取前端登录密码并加密注入到类中
        login.setPassword(Md5Util.StringInMd5(login.getPassword()));
        //从前端接收到的数据注入到类中并进行验证
        String userId = loginService.justLogin(login);
        //验证登陆者身份 1为管理员 0为用户
        String who = loginService.whoLogin(login);
        if (userId != null) {
            if (Integer.parseInt(who) == 1) {
                //向session中存放管理员ID
                session.setAttribute("userId", userId);
                return R.okAi().message("登录成功");
            } else {
                //向session中存放用户ID
                session.setAttribute("userId", userId);
                return R.ok().message("登录成功");
            }
        }
        return R.error().message("账号或者密码错误");
    }

    /**
     * 注册功能
     */
    @PostMapping("/register")
    @ResponseBody
    public R register(@RequestBody Register register) {
        boolean result = loginService.register(register);
        if (!result) {
            return R.error().message("注册失败,请重试");
        }
        return R.ok().message("注册成功");
    }

    /**
     * 忘记密码
     */
    @RequestMapping("/forget")
    @ResponseBody
    public R forget(Register register) {
        String forget = loginService.forget(register);
        if (forget != null) {
            try {
                loginService.updatePassword(register);
                return R.error().message("修改密码成功");
            } catch (Exception e) {

                return R.error().message("修改密码失败");
            }
        } else {
            return R.error().message("用户验证失败,请重试");
        }

    }
}